📓 11 - OCECO/REST API documenation.md by @communecter ☆

[toc]

Documentation pour rest.js

Description générale

rest.js est un fichier JavaScript servant de serveur de backend pour une application web. Il utilise Meteor js et la bibliothĂšque Express.js pour gĂ©rer les requĂȘtes HTTP et interagit avec une base de donnĂ©es MongoDB.

Endpoints

Le fichier rest.js gĂšre plusieurs points d’accĂšs (endpoints) pour des requĂȘtes HTTP GET et POST.

Documentation détaillée des endpoints

Endpoint : GET /api/me/profil

Cet endpoint est utilisĂ© pour rĂ©cupĂ©rer les informations de profil de l’utilisateur actuellement authentifiĂ©.

Endpoint : GET /api/me/organizations

Cet endpoint est utilisĂ© pour rĂ©cupĂ©rer la liste des organisations auxquelles l’utilisateur actuellement authentifiĂ© appartient.

Endpoint : POST /api/action/create

Cet endpoint est utilisĂ© pour crĂ©er une action. Les dĂ©tails de l’action Ă  crĂ©er doivent ĂȘtre inclus dans le corps de la requĂȘte POST en JSON. Ces dĂ©tails sont validĂ©s Ă  l’aide du schĂ©ma SchemasActionsRest. Voici les champs qui peuvent ĂȘtre inclus :

Veuillez noter que la définition exacte de ces champs peut varier en fonction du contexte de votre application. Il est recommandé de consulter le code source et la documentation de votre application pour obtenir des informations plus précises.

Endpoint : POST /api/action/task/create

Cet endpoint est utilisĂ© pour crĂ©er une tĂąche liĂ©e Ă  une action. Les dĂ©tails de la tĂąche Ă  crĂ©er doivent ĂȘtre inclus dans le corps de la requĂȘte POST en JSON. Ces dĂ©tails sont validĂ©s Ă  l’aide d’un schĂ©ma SimpleSchema. Voici les champs qui peuvent ĂȘtre inclus :

Endpoint : POST /api/action/task/list

Cet endpoint est utilisĂ© pour rĂ©cupĂ©rer une liste de tĂąches liĂ©es Ă  une action spĂ©cifique. Les dĂ©tails de l’action sont passĂ©s dans le corps de la requĂȘte POST en JSON. Ces dĂ©tails sont validĂ©s Ă  l’aide d’un schĂ©ma SimpleSchema. Voici les champs qui peuvent ĂȘtre inclus :

Endpoint : POST /api/action/task/checked

Cet endpoint est utilisĂ© pour marquer une tĂąche comme "vĂ©rifiĂ©e" ou "complĂ©tĂ©e". Les dĂ©tails de la tĂąche Ă  vĂ©rifier sont passĂ©s dans le corps de la requĂȘte POST en JSON. Ces dĂ©tails sont validĂ©s Ă  l’aide d’un schĂ©ma SimpleSchema. Voici les champs qui peuvent ĂȘtre inclus :

Endpoint : POST /api/action/comment/create

Ce endpoint est utilisĂ© pour crĂ©er un commentaire sur une action. Les dĂ©tails du commentaire sont passĂ©s dans le corps de la requĂȘte POST.

Endpoint : POST /api/action/comment/list

Ce endpoint est utilisĂ© pour rĂ©cupĂ©rer une liste de commentaires sur une action spĂ©cifique. Les dĂ©tails de l’action sont passĂ©s dans le corps de la requĂȘte POST.

Endpoint : POST /api/action/assign

Ce endpoint est utilisĂ© pour assigner une action Ă  un utilisateur spĂ©cifique. Les dĂ©tails de l’assignation sont passĂ©s dans le corps de la requĂȘte POST.

Endpoint : POST /api/action/finishMe

Ce endpoint est utilisĂ© pour marquer une action comme "terminĂ©e". Les dĂ©tails de l’action sont passĂ©s dans le corps de la requĂȘte POST.

Endpoint : POST /api/action/listElement

Ce endpoint est utilisĂ© pour rĂ©cupĂ©rer une liste d’actions liĂ© Ă  un Ă©lĂ©ment spĂ©cifique. Les dĂ©tails de l’Ă©lĂ©ment sont passĂ©s dans le corps de la requĂȘte POST.

Endpoint : GET /api/action/listMe

Ce endpoint est utilisĂ© pour rĂ©cupĂ©rer une liste d’actions liĂ©es Ă  l’utilisateur actuellement authentifiĂ©.

Endpoint : POST /api/action/listMe

Ce endpoint est Ă©galement utilisĂ© pour rĂ©cupĂ©rer une liste d’actions liĂ©es Ă  l’utilisateur actuellement authentifiĂ©, mais avec des paramĂštres supplĂ©mentaires qui peuvent ĂȘtre passĂ©s dans le corps de la requĂȘte POST.

Endpoint : POST /api/action/dashboardElement

Ce endpoint est utilisĂ© pour rĂ©cupĂ©rer les donnĂ©es du tableau de bord pour un Ă©lĂ©ment spĂ©cifique. Les dĂ©tails de l’Ă©lĂ©ment sont passĂ©s dans le corps de la requĂȘte POST.

Endpoint : POST /api/action/dashboardUserElement

Ce endpoint est utilisĂ© pour rĂ©cupĂ©rer les donnĂ©es du tableau de bord pour un utilisateur spĂ©cifique. Les dĂ©tails de l’utilisateur sont passĂ©s dans le corps de la requĂȘte POST.

Endpoint : POST /api/action/dashboardOrgaUserElement

Ce endpoint est utilisĂ© pour rĂ©cupĂ©rer les donnĂ©es du tableau de bord pour une organisation spĂ©cifique. Les dĂ©tails de l’organisation sont passĂ©s dans le corps de la requĂȘte POST.

Endpoint : POST /api/generatetokenchat

Ce endpoint est utilisĂ© pour gĂ©nĂ©rer un token pour le chat. Les dĂ©tails nĂ©cessaires pour gĂ©nĂ©rer le token sont passĂ©s dans le corps de la requĂȘte POST.

Endpoint : POST /api/generatetokenrest(/:ical)?

Ce endpoint est utilisĂ© pour gĂ©nĂ©rer un token pour les requĂȘtes REST. Il peut Ă©galement prendre un paramĂštre optionnel ical dans l’URL. Les dĂ©tails nĂ©cessaires pour gĂ©nĂ©rer le token sont passĂ©s dans le corps de la requĂȘte POST.

Endpoint : GET /api/generatetoken/:tokenName

Cet endpoint est utilisĂ© pour gĂ©nĂ©rer un token d’accĂšs. Le nom du token est passĂ© en tant que paramĂštre dans l’URL (:tokenName). Le token gĂ©nĂ©rĂ© est associĂ© Ă  l’utilisateur actuellement authentifiĂ©, dont l’ID est obtenu Ă  partir de l’en-tĂȘte HTTP x-user-id.

ParamĂštres URL

En-tĂȘtes HTTP

Réponse

Exemple de Réponse SuccÚs

{
  "_id": "user_id_here",
  "username": "username_here",
  "name": "name_here",
  "email": "email_here",
  "tokenName": "token_name_here",
  "token": "generated_token_here",
  "status": true,
  "msg": "generate token rest oceco"
}

Exemple de RĂ©ponse Échec

{
  "status": false,
  "msg": "not token"
}

ou

{
  "status": false,
  "msg": "not user"
}

Endpoint : POST /api/batchjson/create

Ce endpoint est utilisĂ© pour crĂ©er un lot de donnĂ©es JSON. Les donnĂ©es Ă  crĂ©er sont probablement passĂ©es dans le corps de la requĂȘte POST.

Endpoint : POST /api/hooks/gitlab

Ce endpoint est utilisĂ© pour recevoir des webhooks de GitLab. Les dĂ©tails du webhook sont passĂ©s dans le corps de la requĂȘte POST.

Endpoint : POST /api/hooks/github/:projectid

Ce endpoint est utilisĂ© pour recevoir des webhooks de GitHub pour un projet spĂ©cifique. L’ID du projet est passĂ© en tant que paramĂštre dans l’URL, et les dĂ©tails du webhook sont passĂ©s dans le corps de la requĂȘte POST.

Endpoint : GET /api/organizations/:id/events

Ce endpoint est utilisĂ© pour rĂ©cupĂ©rer les Ă©vĂ©nements d’une organisation spĂ©cifique. L’ID de l’organisation est passĂ© en tant que paramĂštre dans l’URL.

Endpoint : GET /api/organizations/:id/meWallet

Ce endpoint est utilisĂ© pour rĂ©cupĂ©rer le portefeuille de l’utilisateur actuellement authentifiĂ© pour une organisation spĂ©cifique. L’ID de l’organisation est passĂ© en tant que paramĂštre dans l’URL.

Endpoint : GET /ical/organizations/:id/events

Ce endpoint est utilisĂ© pour rĂ©cupĂ©rer les Ă©vĂ©nements iCal d’une organisation spĂ©cifique. L’ID de l’organisation est passĂ© en tant que paramĂštre dans l’URL.

Endpoint : GET /ical/organizations/:id/events/archives

Ce endpoint est utilisĂ© pour rĂ©cupĂ©rer les Ă©vĂ©nements archivĂ©s iCal d’une organisation spĂ©cifique. L’ID de l’organisation est passĂ© en tant que paramĂštre dans l’URL.

Endpoint : GET /ical/organizations/:id/actions

Ce endpoint est utilisĂ© pour rĂ©cupĂ©rer les actions iCal d’une organisation spĂ©cifique. L’ID de l’organisation est passĂ© en tant que paramĂštre dans l’URL.

Endpoint : GET /ical/citoyens/:id/:token/actions

Ce endpoint est utilisĂ© pour rĂ©cupĂ©rer les actions iCal d’un citoyen spĂ©cifique. L’ID du citoyen et le token sont passĂ©s en tant que paramĂštres dans l’URL.

Endpoint : GET /download/doc/:moduleId/:folder/:name/file/:suite

Ce endpoint est utilisĂ© pour tĂ©lĂ©charger un document spĂ©cifique. Les dĂ©tails du document sont passĂ©s en tant que paramĂštres dans l’URL.

Fonction : runAsUser(userId, function())

Cette fonction permet d’exĂ©cuter une certaine fonction en tant qu’utilisateur spĂ©cifique. Elle prend en entrĂ©e l’ID de l’utilisateur et la fonction Ă  exĂ©cuter.

Fonction : verifyRestToken(id, 'restIcal', token)

Cette fonction est utilisĂ©e pour vĂ©rifier le token d’un utilisateur. Elle prend en entrĂ©e l’ID de l’utilisateur, le type de token (dans ce cas, ‘restIcal’), et le token Ă  vĂ©rifier.

Fonction : verifyTokenMeteor(req, res, next)

Cette fonction est un middleware utilisĂ© pour vĂ©rifier le token d’un utilisateur. Elle est gĂ©nĂ©ralement appelĂ©e avant d’exĂ©cuter un autre middleware ou une fonction de gestion d’endpoint. Elle prend en entrĂ©e la requĂȘte (req), la rĂ©ponse (res), et la fonction next qui est gĂ©nĂ©ralement appelĂ©e aprĂšs avoir terminĂ© l’exĂ©cution de ce middleware.

Authentification via SSO

Pour les endpoints nĂ©cessitant une authentification, vous pouvez utiliser les tokens obtenus via le SSO (/oauth/userinfo). Ces tokens doivent ĂȘtre inclus dans les en-tĂȘtes HTTP de la requĂȘte comme suit :

Génération de Token Oceco pour Tibillet

Pour générer un token Oceco spécifique pour Tibillet, utilisez la commande curl suivante :

curl --location --request GET 'https://oce.co.tools/api/generatetoken/tibillet' \
<p><hr /></p>header 'x-access-token: apiToken' \
<p><hr /></p>header 'x-user-id: user_id' \
<p><hr /></p>header 'Content-Type: application/json'

Réponse attendue

La rĂ©ponse sera un JSON contenant le nouveau token et d’autres informations sur l’utilisateur.

{
  "_id": "user_id_here",
  "username": "username_here",
  "name": "name_here",
  "email": "email_here",
  "tokenName": "tibillet",
  "token": "generated_token_here",
  "bearer": "authorization_bearer_token",
  "status": true,
  "msg": "generate token rest oceco"
}

Utilisation de Token Oceco pour Tibillet

Une fois que vous avez gĂ©nĂ©rĂ© un token Oceco pour Tibillet, vous pouvez l’utiliser pour accĂ©der Ă  diffĂ©rents endpoints. Par exemple :

RĂ©cupĂ©rer la liste des actions pour l’utilisateur actuel

curl --location --request GET 'https://oce.co.tools/api/action/listMe' \
<p><hr /></p>header 'x-access-token: token' \
<p><hr /></p>header 'x-user-id: user_id' \
<p><hr /></p>header 'x-token-name: tibillet' \
<p><hr /></p>header 'Content-Type: application/json'

Récupérer le solde du portefeuille pour une organisation spécifique

curl --location --request GET 'https://oce.co.tools/api/organizations/:organizationId/meWallet' \
<p><hr /></p>header 'x-access-token: token' \
<p><hr /></p>header 'x-user-id: user_id' \
<p><hr /></p>header 'x-token-name: tibillet' \
<p><hr /></p>header 'Content-Type: application/json'

Réponse attendue

La rĂ©ponse sera un JSON contenant le solde du portefeuille pour l’utilisateur au sein de l’organisation spĂ©cifiĂ©e.

{
  "status": true,
  "userId": "user_id_here",
  "organizationId": "organization_id_here",
  "wallet": 1785,
  "msg": "organization wallet user"
}

Bearer

On peut aussi utiliser aussi le header Authorization: Bearer bearerToken pour faire les appelles

curl --location --request POST 'http://localhost:3000/api/action/create' \
<p><hr /></p>header 'Authorization: Bearer bearerToken' \
<p><hr /></p>header 'Content-Type: application/json' \
-d '{"name":"test beaerer", "parentId":"55ed9107e41d75a41a558524", "parentType":"citoyens"}'